我們在 Day 7 設定了 self-hosted runner,後來一直沒去用他,今天來把他用起來。
在繼續之前,讓我們再次回顧 self-hosted runner 的一些關鍵特點:
我主要是因為 "3. 網路存取" 而架設地端的 runner,因為我會部署服務在我自家內網的機器上。
首先,我們需要確認 runner 的狀態。請前往 GitHub Settings > Actions > Runners 頁面。
令人驚訝的是,我們發現 runner 下線了。
這時突然想到,之前是使用 ./run.sh
來讓服務啟動,重開機 (甚至是登出 SSH 後) 以後這個服務就被關掉了。
原來是沒有讓它常駐在系統啊,那我們先來安裝成 service
我做了以下的步驟,console 輸出也在裡面:
PS. 請注意我的 runner 是以 root 權限執行的,所以我才會設定一個環境變數叫做 RUNNER_ALLOW_RUNASROOT
,如果沒有要用 root 跑 runner 就不需要此設定此變數。
root@pi-host:~/actions-runner# RUNNER_ALLOW_RUNASROOT="1" ./svc.sh install root
Creating launch runner in /etc/systemd/system/actions.runner.**masked**-too-simple-rss-reader.pi4.service
Run as user: root
Run as uid: 0
gid: 0
Created symlink /etc/systemd/system/multi-user.target.wants/actions.runner.**masked**-too-simple-rss-reader.pi4.service → /etc/systemd/system/actions.runner.**masked**-too-simple-rss-reader.pi4.service.
root@pi-host:~/actions-runner# systemctl enable actions.runner.**masked**-too-simple-rss-reader.pi4.service
root@pi-host:~/actions-runner# systemctl start actions.runner.**masked**-too-simple-rss-reader.pi4.service
root@pi-host:~/actions-runner# systemctl status actions.runner.**masked**-too-simple-rss-reader.pi4.service
● actions.runner.**masked**-too-simple-rss-reader.pi4.service - GitHub Actions Runner (**masked**-too-simple-rss-reader.pi4)
Loaded: loaded (/etc/systemd/system/actions.runner.**masked**-too-simple-rss-reader.pi4.service; enabled; preset: enabled)
Active: active (running) since Sun 2023-09-17 22:12:01 CST; 3s ago
Main PID: 7380 (runsvc.sh)
Tasks: 24 (limit: 4414)
Memory: 35.1M
CPU: 3.047s
CGroup: /system.slice/actions.runner.**masked**-too-simple-rss-reader.pi4.service
├─7380 /bin/bash /root/actions-runner/runsvc.sh
├─7382 ./externals/node16/bin/node ./bin/RunnerService.js
└─7389 /root/actions-runner/bin/Runner.Listener run --startuptype service
Sep 17 22:12:01 pi-host systemd[1]: Started actions.runner.**masked**-too-simple-rss-reader.pi4.service - GitHub Actions Runner (**masked**-too-simple-rss-reader.p>
Sep 17 22:12:01 pi-host runsvc.sh[7380]: .path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Sep 17 22:12:01 pi-host runsvc.sh[7382]: Starting Runner listener with startup type: service
Sep 17 22:12:01 pi-host runsvc.sh[7382]: Started listener process, pid: 7389
Sep 17 22:12:01 pi-host runsvc.sh[7382]: Started running service
有了
既然我們已經成功地重新啟動了自己的 runner,那麼接下來就是告訴 GitHub Actions 我們要用它。這需要我們修改存儲庫中的 .github/workflows/main.yml
或者其他你用於定義 workflow 的 yaml 文件。
原來的YAML可能類似於以下內容:
name: CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
# ... 其他
要改為使用我們自己的 runner,我們需要更改 runs-on
字段。我們的 self-hosted runner 有self-hosted
,linux
兩個 tag,所以我們應該這樣設定:
name: CI
on:
push:
branches:
- main
jobs:
build:
runs-on: [self-hosted, linux]
steps:
- name: Checkout code
uses: actions/checkout@v4
# ... 其他
這樣一來,每次這個 workflow 觸發時,它就會在我們配置有 self-hosted
,linux
標籤的 runner 上執行。
實際上。去看 job log 也確實有了
今天,我們不僅確保了我們的 self-hosted runner 能在重啟後自動執行,也學會了如何在 GitHub Actions 中配置它。這讓我們的整個開發流程更加高效和靈活。